home *** CD-ROM | disk | FTP | other *** search
- Date: Tue, 26 Apr 94 18:43:52 PDT
- From: brad@tazboy.Jpl.Nasa.Gov (Brad Pickering)
- Message-Id: <9404270143.AA25944@tazboy.JPL.NASA.GOV>
- id AA04259; Tue, 26 Apr 94 17:46:08 PDT
- To: mint@atari.archive.umich.edu
- Subject: mint library fgetc
-
- I have been playing around with Scheme->C under MiNT, trying
- to track down why it doesn't work the same as under UNIX on
- the Sun. If anybody has ported Scheme->C to MiNT, could you
- let me know.
-
- My first problem is in the interpretation of ^D (EOF). S2C has the
- following code for reading characters. On the Sun, ^D on a tty causes
- getc to return EOF, and feof() to return TRUE, so EOFOBJECT is
- returned. Under MiNT, ^D on the console returns EOF, but feof()
- returns FALSE.
-
- Scheme->C code for getc:
-
- character = getc( stream );
- if (character == EOF) {
- if (feof( stream )) {
- clearerr( stream );
- return( EOFOBJECT );
- }
- else
- return( CSTRING_TSCP( strerror( ferror( stream ) ) ) );
- }
- return( C_CHAR( character ) );
-
- Below is part of the code for filbuf in the MiNT library. It looks
- like the EOF flag is not set if the file has the IODEV flag set. I
- don't think this code should care what kind of device it is reading
- from. What do you think?
-
- MiNT filbuf code:
-
- fp->_ptr = fp->_base;
- if((got = _read(fp->_file, fp->_base, (unsigned long)fp->_bsiz)) <= 0)
- { /* EOF or error */
- fp->_flag |= ((got == 0) ? ((f & _IODEV) ? 0 : _IOEOF) : _IOERR);
- fp->_cnt = 0;
- return EOF;
- }
- fp->_cnt = got - 1;
- return *(fp->_ptr)++;
-
-
- Brad
-